了解日常中,最為常見得兩種傳輸層協議,他們提供了應用間傳遞資料更好的控制,包括建立及取消傳送還有流程控制/錯誤處理...等,借此機會,了解TCP與UDP間的功用及差異。
Transmission Control Protocol(TCP)為傳輸控制協議,主要目的是可確保資料通訊的正確傳輸,由以下幾點來達到可靠性傳輸:
Three-Way Handshake(稱三路握手)是TCP建立傳送的重點機制,將以下面圖示來闡述:
![wiki](
圖片擷取自wiki
client端向server端發送請求前,會先經過幾個程序:
當client想對server連線時,就必須主動向server傳送一個要求連線的封包。
當server接收並確認這個封包後,也會回傳一個相對應的封包,給client確認,並且開始等待client的回應。
當client收到server回應的封包後,就能確認之前主動發送的封包有被正確接收了,如果client也同意與server建立連線,就會再回傳一個確認封包告知server。
當server接收到也確認過後,即完成三向交握,並進入了連接建立狀態。
其實這樣的動作在日常也很常發生,像是與朋友使用網路電話時:
建立連線後,封包再進行傳輸時都會加上序號,透過序號能夠標示出其順序,從而另一端接收資料時可以重建順序,不怕中間有丟包或亂序的問題發生,
上述說描述的傳輸方式,如果都要等待每次傳輸的回應後才能進行下一次,那傳輸效率肯定很差,
為此,有了窗口的概念,接收端能夠定義窗口大小,也就是一次能接收更多的封包,進行同時多段的封包傳輸/確認,大幅提升傳輸效率。
User Datagram Protocol(UDP),用戶資料流協議,UDP 與 TCP 不一樣, UDP 不提供可靠的傳輸模式,相較於TCP的三項交握機制,UDP在傳送的過程中,接收端在接收到封包後並不會回覆確認接收給發送端,也因此封包沒有像TCP管理得這麼嚴密。
但也因為如此,少了一些確認機制,不僅表頭資料會較少,傳輸效率也比較好。因此UDP比較適合需要即時反應的應用,如這次主題的即時通訊應用等,換句話說,當不考慮連線要求、連線終止或流量控制等特性,且資料正確性沒有佔很重的情況,適合使用UDP。
兩者都有各自的優缺點,也因此能夠視情況互相搭配使用。
當然這其中還有很多機制在,但這邊不多加闡述,主要在理解其中概念與用途~~
新手入門,如有錯誤,歡迎指正~~~
系列文章同步更新於部落格